1. Field of the Invention
The present invention relates to data storage and/or transmission channels with non-uniform, or varying, signal-to-noise ratios (SNRs), and more particularly to the use of interleaved error correction coding for such channels.
2. Background of the Invention
Data transfer systems, such as data transmission systems and data storage systems, are typically characterized using the concept of data channels. In data transmission systems, for example, data can be transmitted via channels such as wires, fiber-optic cable, wireless protocols, etc. In data storage systems, the storage medium itself is a data channel. In this regard, storage system channels can include, for example, hard disk platters, solid state memory, digital tape, volume holographic memory, and others.
The efficiency and reliability of data channels can depend on many factors, such as the signal-to-noise ratio (SNR) of the channel. For example, storage mediums having a high SNR can allow for more accurate storage and recovery of data. On the other hand, storage mediums having a low SNR can result in high error rates, including misread and lost data. Similarly, the accuracy of a digital data communication channel depends on its SNR. High-SNR communication channels can transmit data quickly and accurately, while low-SNR communication channels can be plagued with errors, such as dropped messages.
Error correction coding (ECC) can provide a way to reduce errors in data storage and transmission by introducing data redundancy into the channel, typically in the form of extra bits that are used to check the validity of the original data. Examples of error correcting codes include Reed-Solomon (RS), Bose, Ray-Chaudhuri, Hocquenghem (BCH), low-density parity-check (LDPC) and Turbo codes. ECC codes typically utilize code words, which are specific patterns of bits or symbols in a storage medium or transmission signal, to group data into chunks to be checked for errors. In systematic codes, for example, some of the bits or symbols in a code word are reserved for the data that is to be stored or transmitted (the “original data”), and other bits or symbols in a code word are reserved for data used in the checking process. For non-systematic codes, “original data” is not kept (is not directly available at the output of the encodes), but can be decoded from encoded code words. In this way, code words can help improve the bit error rate (BER) of a channel, which is the ratio of incorrect bits to all bits received through the channel in a given period of time. In particular, the use of code words can reduce errors caused by low SNR of a channel.
However, the use of ECC to improve the BER of a channel results in some drawbacks, such as reduced storage capacity or transmission rate for the original data. In particular, stronger ECC codes have longer code words that are better able to detect and correct errors, thus can better improve the BER of a channel. On the other hand, longer code words also result in a greater reduction of storage capacity or transmission rate. Consequently, many ECC codes are designed to utilize code words that are just strong enough to improve the BER of a channel to a minimum acceptable level. For channels of uniform SNR, i.e., channels having a single SNR throughout the channel, it is not too difficult to design an ECC code in which all code words are just strong enough to improve the BER of the channel to a minimum acceptable level.
For channels of non-uniform SNR, which have multiple or varying SNRs throughout the channel, conventional ECC codes are designed around the “lowest common denominator” of the system, that is, the lowest SNR in the channel. Thus, while code words associated with regions of the lowest SNR are designed to be just strong enough to meet the minimum BER, code words associated with the regions of higher SNR typically include extra bits that are not needed to achieve the minimum BER.